﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TakbisBilgiSorgu_v1.wsUygulamaYetkiServis;
using TakbisBilgiSorgu_v1.wsUygulamaTakbisServis;
using System.Configuration;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Text;

namespace TakbisBilgiSorgu_v1
{
    public partial class SFTakbisBilgiSorguLogIslemleri : System.Web.UI.Page
    {
        UygulamaYetkiServis uygulamaYetkiServis = new UygulamaYetkiServis();
        UygulamaTakbisServis uygulamaTakbisServis = new UygulamaTakbisServis();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (((Kullanici)Session["kullanici"]) == null)
                    {
                        MesajVer(ConfigurationManager.AppSettings["GirisYapmalisinizMesaji"].ToString());
                        Response.Redirect("Login.aspx");
                    }
                    else
                    {
                        if (!uygulamaYetkiServis.GrupYetkiVarMiKontrolYeni(((Kullanici)Session["kullanici"]).GrupID, "SFTakbisBilgiSorguLogIslemleri.aspx") || ((Kullanici)Session["kullanici"]).AktifMi != 1)
                        {
                            MesajVer(ConfigurationManager.AppSettings["YetkinizYokMesaji"].ToString());
                            Response.Redirect("AnaSayfa.aspx");
                        }
                        else
                        {
                            divgvKullanici.Visible = true;
                            divgvTakbisBilgiSorguLog.Visible = false;
                            KullaniciTablosuDoldur();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnTakbisBilgiSorguLogGetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (uygulamaYetkiServis.BosDegerMi(txtBaslamaTarihGun.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBaslamaTarihGun.Text.Trim()) &&
                uygulamaYetkiServis.BosDegerMi(txtBaslamaTarihAy.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBaslamaTarihAy.Text.Trim()) &&
                uygulamaYetkiServis.BosDegerMi(txtBaslamaTarihYil.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBaslamaTarihYil.Text.Trim()) &&
                uygulamaYetkiServis.BosDegerMi(txtBitisTarihGun.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBitisTarihGun.Text.Trim()) &&
                uygulamaYetkiServis.BosDegerMi(txtBitisTarihAy.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBitisTarihAy.Text.Trim()) &&
                uygulamaYetkiServis.BosDegerMi(txtBitisTarihYil.Text.Trim()) &&
                uygulamaYetkiServis.SqlInjectionControl(txtBitisTarihYil.Text.Trim()) &&
                Session["SecilenKullaniciID"] != null)
                {
                    TakbisBilgiSorguLog[] takbisBilgiSorguLogArray = uygulamaTakbisServis.GetirTakbisBilgiSorguLog(Convert.ToInt32(txtBaslamaTarihGun.Text.Trim()), Convert.ToInt32(txtBaslamaTarihAy.Text.Trim()), Convert.ToInt32(txtBaslamaTarihYil.Text.Trim()), Convert.ToInt32(txtBitisTarihGun.Text.Trim()), Convert.ToInt32(txtBitisTarihAy.Text.Trim()), Convert.ToInt32(txtBitisTarihYil.Text.Trim()), Convert.ToInt64(Session["SecilenKullaniciID"]), ((Kullanici)Session["kullanici"]).ID);
                    if (takbisBilgiSorguLogArray != null)
                    {
                        Session["TakbisBilgiSorguLogList"] = takbisBilgiSorguLogArray.ToList();
                        if (Session["TakbisBilgiSorguLogList"] != null && ((List<TakbisBilgiSorguLog>) Session["TakbisBilgiSorguLogList"]).Count > 0)
                        {
                            gvTakbisBilgiSorguLog.DataSource = Session["TakbisBilgiSorguLogList"];
                            gvTakbisBilgiSorguLog.DataBind();
                            ViewState["TakbisBilgiSorguLogList"] = Session["TakbisBilgiSorguLogList"];
                            divgvTakbisBilgiSorguLog.Visible = true;
                        }
                        else
                            MesajVer("Sorgulanan Kayıt Bulunmamaktadır.");
                    }
                    else
                        MesajVer("Sorgulanan Kayıt Bulunmamaktadır.");
                }
                else
                    MesajVer("Sorgulama Kriterlerini Kontrol Edip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void KullaniciTablosuDoldur()
        {
            Session["KullaniciList"] = uygulamaYetkiServis.KullaniciGetir().ToList<Kullanici>();
            if (Session["KullaniciList"] != null)
            {
                gvKullanici.DataSource = Session["KullaniciList"];
                gvKullanici.DataBind();
                ViewState["gvKullanici"] = Session["KullaniciList"];
            }
        }

        protected void MesajVer(string mesaj)
        {
            ClientScript.RegisterStartupScript(this.GetType(), " Uyarı.. ", "ShowPopup('" + mesaj + "');", true);
        }

        protected void gvKullanici_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["gvKullanici"] != null)
                {
                    gvKullanici.DataSource = ViewState["gvKullanici"];
                    gvKullanici.PageIndex = e.NewPageIndex;
                }
                else
                    gvKullanici.DataSource = null;
                gvKullanici.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvKullanici_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvKullanici_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    e.Row.Cells[1].Text = "Kodu";
                    e.Row.Cells[2].Text = "Adı";
                    e.Row.Cells[3].Text = "Soyadı";
                    e.Row.Cells[4].Text = "Grup Adı";
                    e.Row.Cells[5].Text = "Aktif Mi";
                }

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "AktifMiAciklama")) == "Pasif")
                        e.Row.ForeColor = System.Drawing.Color.Red;
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvKullanici, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvKullanici_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (gvKullanici.Rows.Count > 1)
                {
                    foreach (GridViewRow row in gvKullanici.Rows)
                    {
                        if (row.RowIndex == gvKullanici.SelectedIndex)
                            row.ToolTip = string.Empty;
                        else
                        {
                            Session["SecilenKullaniciID"] = null;
                            Session["SecilenKullaniciID"] = Convert.ToInt64(gvKullanici.DataKeys[gvKullanici.SelectedIndex].Values[0]);
                        }
                    }
                }
                else
                {
                    Session["SecilenKullaniciID"] = null;
                    Session["SecilenKullaniciID"] = Convert.ToInt64(gvKullanici.DataKeys[gvKullanici.SelectedIndex].Values[0]);
                }

                divgvTakbisBilgiSorguLog.Visible = false;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void SatirIsaretle(GridViewRowEventArgs e)
        {
            try
            {
                //mause gridin üzerine geldiğinde satırlar işaretlensin diye yaptım
                if (e.Row.RowType != DataControlRowType.DataRow)
                    return;
                // eger yaratilan satir farkliysa data satirindan buradan cik 
                e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#F0FFFF'");
                // mouse overina bu stil attribute'ini ekle 
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
                // mouse out ise eski stile don
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvTakbisBilgiSorguLog_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["TakbisBilgiSorguLogList"] != null)
                {
                    gvTakbisBilgiSorguLog.DataSource = ViewState["TakbisBilgiSorguLogList"];
                    gvTakbisBilgiSorguLog.PageIndex = e.NewPageIndex;
                }
                else
                    gvTakbisBilgiSorguLog.DataSource = null;
                gvTakbisBilgiSorguLog.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvTakbisBilgiSorguLog_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvTakbisBilgiSorguLog_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvTakbisBilgiSorguLog, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvTakbisBilgiSorguLog_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (gvTakbisBilgiSorguLog.Rows.Count > 1)
                {
                    foreach (GridViewRow row in gvTakbisBilgiSorguLog.Rows)
                    {
                        if (row.RowIndex == gvTakbisBilgiSorguLog.SelectedIndex)
                            row.ToolTip = string.Empty;
                        else
                            Session["SecilenTakbisBilgiSorguLog"] = (((List<TakbisBilgiSorguLog>)Session["TakbisBilgiSorguLogList"]).Find(ii => ii.ID == Convert.ToInt64(gvTakbisBilgiSorguLog.DataKeys[gvTakbisBilgiSorguLog.SelectedIndex].Values[0])) as TakbisBilgiSorguLog);
                    }
                }
                else
                    Session["SecilenTakbisBilgiSorguLog"] = (((List<TakbisBilgiSorguLog>)Session["TakbisBilgiSorguLogList"]).Find(ii => ii.ID == Convert.ToInt64(gvTakbisBilgiSorguLog.DataKeys[gvTakbisBilgiSorguLog.SelectedIndex].Values[0])) as TakbisBilgiSorguLog);
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnGidenObjeGetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (((TakbisBilgiSorguLog)Session["SecilenTakbisBilgiSorguLog"]).GidenObje != null)
                {
                    string text = ((TakbisBilgiSorguLog)Session["SecilenTakbisBilgiSorguLog"]).GidenObje.ToString();
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("Content-Length", text.Length.ToString());
                    Response.ContentType = "text/plain";
                    Response.AppendHeader("content-disposition", "attachment;filename=\"GidenObje.txt\"");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.Write(text);
                    Response.Flush();
                }
                else
                    MesajVer("Giden Obje Bulunmamaktadır.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
            finally
            {
                Response.End();
            }
        }

        protected void btnCevapObjesiGetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (((TakbisBilgiSorguLog)Session["SecilenTakbisBilgiSorguLog"]).CevapObjesi != null)
                {
                    string text = ((TakbisBilgiSorguLog)Session["SecilenTakbisBilgiSorguLog"]).CevapObjesi.ToString();
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("Content-Length", text.Length.ToString());
                    Response.ContentType = "text/plain";
                    Response.AppendHeader("content-disposition", "attachment;filename=\"CevapObjesi.txt\"");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.Write(text);
                    Response.Flush();
                }
                else
                    MesajVer("Cevap Objesi Bulunmamaktadır.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
            finally
            {
                Response.End();
            }
        }

        protected void btnTakbisBilgiSorguLogExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvTakbisBilgiSorguLog.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.TakbisBilgiSorguLogExceleYaz(((List<TakbisBilgiSorguLog>)Session["TakbisBilgiSorguLogList"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
            finally
            {
                Response.End();
            }
        }
    }
}
